Video data typically includes luminance and chrominance data for each pixel in a frame. Raw digital video data contains too much information for transmission over normal communication media and requires considerable storage capacity. Consequently, to utilize either the limited bandwidth of the communication media, or storage capacity efficiently, coding techniques are commonly used to compress the information contained in the raw video data.
For example, in FIG. 1, video camera 101 generates an analog video signal that drives input processor 102. Input processor 102 digitizes and typically filters the analog video signal to produce a raw digital video signal. The raw digital video signal is encoded, i.e., compressed, by encoder 103.
The compressed digital video signal is transmitted over a communication channel, for example, a satellite link, to a decoding system 120 that includes a decoder 121, a post-processor 122, and a display driver 123. Decoder 121 decompresses the encoded video data and supplies the resulting signal to post-processor 122, which in turn smooths and enhances the video signal. The video signal from post-processor 122 supplies display driver 123 that drives display unit 130. The encoding, i.e., compression, of video signals for storage or transmission and the subsequent decoding is well-known.
Typically, multiple applications are sharing access to a communication channel rather than just a single application, i.e., video camera 101 as illustrated in FIG. 1. For example, in FIG. 2, "L" applications 201-1 to 201-L are compressed using encoders 202-1 to 202-L, respectively. Applications 201-1 to 201-L can be from a variety of signal sources, e.g., video, audio, etc.
Each application 201-1 to 201-L drives an encoder 202-1 to 202-L, respectively. Typically, for a video input signal a compression loop 204-1 within encoder 201-1, for example, performs prediction and quantization as the main operations. As each picture of a video signal is compressed by compression loop 204-1, bits of compressed data are written to buffer 205-1. A controller (not shown) manages rate control of the compression to prevent buffer 205-1 from overflowing and underflowing. The video encoder rate control ensures that encoder 201-1 produces bits of encoded data at an approximately constant rate over some interval of time from buffer 205-1 while maximizing the picture quality of the video sequence.
Applications 201-1 to 201-L are either fixed rate or variable rate applications. A fixed rate application 201-i releases bits to channel 230 at a constant rate. A variable rate application 202-i releases bits to channel 230 over a non-constant rate, i.e., the rate may change with time.
The output data from encoders 202-1 to 202-L are each an input data stream to multiplexer 210. The data stream passed through multiplexer 210 is determined by a multiplexer controller circuit 211 that receives input signals from a system controller 250. System controller 250 is typically a computer that is programmed to pass signals to multiplexer control circuit 211 so that encoded data are passed through multiplexer 210 in manner that is independent of the content of the transmitted signal or the quality of the resulting image.
Transfer of information from encoders 202-1 to 202-L to the multiplexer 210 and subsequently to the communication channel usually is done in packets of information. Multiplexer 210 passes therethrough to communication channel 220 a packet of data at a time from one of applications 201-1 to 201-L. The number of packets transferred from an application 201-i to communication channel 220 averaged over some interval of time, say a second, equals the rate allocated to that particular application. Note that it is not necessary that the transfer of information be packet based.